草庐IT

c++ - 池化线程的 SetThreadAffinityMask

全部标签

c - 微型筛选器驱动程序 : how to replace file content on open?

我有一个顶层微过滤器驱动和一个用户模式服务,类似于ScannerMSDNexample.我希望我的用户模式服务在记事本中打开时替换A.txt文件内容。因此,在IRP_MJ_CREATE操作后回调中,我向服务发送通知并等待它向文件写入新数据。但是服务无法打开A.txt,因为它已经被记事本锁定了。如何让我的服务在不使用内核的情况下写入数据FltWriteFile?这样做的最佳方法是什么?也许取消文件打开,让服务写入数据并用相同的参数重新打开它而不离开操作后回调?也许我应该在预操作中覆盖所需的访问权限?---任何信息将不胜感激。如果您认为这个问题缺乏细节,请告诉我。

c++ - 创建 .lib 文件 - 第一次

这是我第一次创建.lib文件,我有以下C++.exe项目:#include#pragmacomment(lib,"mylib.lib")intmyFunction(void);voidmain(){myFunction();}和另一个C项目(.lib项目)int__cdeclmyFunction(void){}我正在成功编译.lib文件“mylib.lib”并将其放入我的exe文件的编译目录,但我收到“错误LNK2019:未解析的外部符号”错误,我是不是忘记了什么? 最佳答案 通常您会为您的库提供header,并将其包含在库和用户中

c - RegSetValueEx 返回 ERROR_SUCCESS 但没有显示任何值

这个问题不太可能帮助任何future的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况有关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visitthehelpcenter.关闭9年前。我正在尝试在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run下设置一个注册表值,以使我的应用程序在启动时运行。以下函数返回TRUE,但未显示该值。BOOLInstallRunOnStartup(constchar*applicationName){HKEYkey;charfil

在 Windows 核心文件上调用 fopen 返回 NULL 指针

我试图通过它们的绝对路径(在其他地方以编程方式确定)打开几个不同的文件,这样我就可以获得它们的SHA1哈希*,其中一些是核心Windows文件。当我尝试按如下方式打开文件时,fopen()在某些(但不是全部)文件上返回NULL(通常文件名是通过QueryFullProcessImageName获取的,但为了以防万一,我对其进行了硬编码):char*filename="c:\\windows\\system32\\spoolsv.exe";FILE*currFileRead=fopen(filename,"rb");if(currFileRead==NULL){printf("Faile

c - 无法使用for循环创建多个线程

我正在尝试使用for循环创建3个线程。以下是我的代码片段:DWORDWINAPIThreadProc0(LPVOIDparam){return0;}DWORDWINAPIThreadProc1(LPVOIDparam){return0;}DWORDWINAPIThreadProc2(LPVOIDparam){return0;}intWINAPIWinMain(HINSTANCEhInst,HINSTANCEhPrevInstance,LPSTRlpCmdLine,intnShowCmd){DWORDthreadId=0;intmax_number=1;//Startthethreads

创建 3 个线程并使用 WSAWaitForMultipleEvents() 和 WSAEnumNetworkEvents() 时 CPU 使用率 100%

我创建了3个线程,每个线程都有一个套接字。在每个线程中,套接字被设置为“事件驱动”,并且每当数据可供读取时,就会生成一个事件。该代码工作正常,但它占用CPU使用率高达100%,这肯定是不可取的。我想我犯了一些错误。下面是我的代码。请帮助我找出导致100%CPU使用率的错误。代码:DWORDWINAPIThreadProc(LPVOIDparam){intthreadNumber=(int)param;intPORT=8888+threadNumber;//sothateachthreadbind()sitssockettoadifferentPortnumber.WSADATAwsa;

c# - 使用线程进行数据库操作的最佳方式是什么?

我正在开发一个以SQLCompact作为主数据库的WinForms应用程序。有人告诉我我永远不会弄乱UI线程,每个操作都需要在UI线程之外完成。按照这个演讲,我为每个CRUD操作创建了一个线程并出现了一个进度条,但我认为这可能不是执行此操作的最佳方法,而且我不确定何时何地在数据库操作的同时使用线程。我没有使用UI线程来进行这些数据库调用,但如果我愿意的话,我没有看到任何问题。为了向用户显示信息,我在需要时调用(在网格或组合框中显示数据)。这是一小段代码:this.SuspendLayout();ProgressDialogprogressDialog=newProgressDialog

c - SetWindowLongPtr 返回 ERROR_ACCESS_DENIED

我还在为钩子(Hook)而苦苦挣扎。我的目标是:在notepad.exe中设置一个钩子(Hook)对其进行子类化(我的最终目标是将Edit类子类化并在我自己的窗口中显示内容)免责声明:我知道有更简单的方法可以从记事本中获取文本/内容,但这是我学习C、winapi、子类化和Hook的一种方式。我的问题是SetWindowLongPtr始终返回ERROR_ACCESS_DENIED错误(代码5)。2013年5月22日:已修复!问题是SetWindowLongPtr在错误的地方。它必须在GetMsgProc函数内。问题变得有点冗长和困惑,所以我重新写了问题(更新了代码)现在的问题是,当目标是

c - PEB地址(0x07FF DA00)是加载进程基地址的RV吗?

我正在尝试使用C/ASM中的PEB结构,但在此之前我想了解一些基础知识。我在某处读到,大多数进程在地址0x07FFDA00处都有它们的PEB。现在这个地址是相对于进程基地址的,即(0x00400000+0x07FFDA00==PEBbaseaddr)?因为所有进程当然不能将它们的PEB指向这个地址。 最佳答案 Becauseallprocessescan'thavetheirPEBtothisaddressofcourse.如果0x07FFDA00和0x00400000都是虚拟地址,那么所有进程都可以在该地址拥有它们的PEB。正如您

c - 构建解决方案时出现 LNK2019 错误。为什么?

我确信这在过去已经得到解决。抱歉。我想了解为什么我会收到错误LNK2019。以及要采取什么方向来解决这个问题。ErrorsareLNK2019:unresolvedexternalsymbol__imp__ReportErrorreferencedinfunction_wmainunresolvedexternalsymbol__imp__Optionsreferencedinfunction_wmain当我在VisualStudio2010及更高版本中构建解决方案时会发生这种情况。上述方法的头文件内容如下:LIBSPECDWORDOptions(int,LPCTSTR*,LPCTST